import java.util.List;
import java.util.ListIterator;

public class ArrayList {
    public static void main(String[] args) {
        java.util.ArrayList<Integer> list = new java.util.ArrayList<>();

        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);

        ListIterator<Integer> it = list.listIterator();
        while (it.hasNext()){
            System.out.print(it.next()+" ");
        }
        System.out.println();

        ListIterator<Integer> it2 = list.listIterator(1);
        while (it2.hasNext()){
            System.out.print(it2.next()+" ");
        }
        System.out.println();

        ListIterator<Integer> it3 = list.listIterator(list.size()-1);
        while (it3.hasPrevious()){
            System.out.print(it3.previous()+" ");
        }
        System.out.println();


        //截取部分list 它截取的是list的地址  用 List<> 接收
        List<Integer> sub = list.subList(1,3);

        //当修改下标元素时 list中的元素也将被修改
        sub.set(0,99);
        System.out.println(sub);

        System.out.println(list);

//        System.out.println(list.subList(0, 3));

        //返回最后一个o的下标
        list.lastIndexOf(1);

        //返回第一个o的下标
        list.indexOf(1);

        //判断o是否在线性表中
        list.contains(4);

//        System.out.println(list);

        //清空
        list.clear();

        //获取下标inde位置的元素
        list.get(1);

        //将下标index位置元素 设置为o
        list.set(0,list.get(2));



        //尾插元素
        list.add(0,0);

        //删除index位置元素
        list.remove(0);

        //删除遇到的第一个element 他是boolean类型的 要用包装类
        Integer ii = 2;
        list.remove(ii);
//
        list.remove(new Integer(3));

        System.out.println("---------------");

        java.util.ArrayList<Integer> list2 = new java.util.ArrayList<>();

        list2.addAll(list);
        list2.add(4);

        System.out.println(list2);
    }
}
